package com.cetool.autocms.controller.user;

import com.cetool.autocms.annotation.TokenAnnotation;
import com.cetool.autocms.common.PageRequest;
import com.cetool.autocms.enumeration.OperateEnum;
import com.cetool.autocms.pojo.dto.user.ClientUserInfoDTO;
import com.cetool.autocms.pojo.request.user.DeleteUserRequest;
import com.cetool.autocms.pojo.request.user.QueryClientUserListRequest;
import com.cetool.autocms.pojo.request.user.SaveClientUserRequest;
import com.cetool.autocms.pojo.request.user.UpdateClientUserRequest;
import com.cetool.autocms.service.user.ClientUserService;
import com.github.pagehelper.PageSerializable;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

/**
 * 客户端用户信息管理
 *
 * @author 戴越
 * @date 2021/11/16
 */
@RestController
@RequestMapping("/clientUser")
@Api(tags = "客户端用户信息管理")
public class ClientUserController {
    /**
     * 注入客户端用户信息服务
     */
    @Autowired
    private ClientUserService clientUserService;

    /**
     * 新增客户端用户
     *
     * @param request 新增客户端用户请求实体
     * @author 戴越
     * @date 2021/11/9
     */
    @TokenAnnotation
    @PostMapping("/saveClientUser")
    @ApiOperation(value = "新增客户端用户")
    public OperateEnum saveClientUser(@Valid @RequestBody SaveClientUserRequest request) {
        return clientUserService.saveClientUser(request);
    }

    /**
     * 分页查询客户端用户信息列表
     *
     * @param request 分页查询客户端用户信息请求实体
     * @return 管理员用户信息分页列表
     * @author 戴越
     * @date 2021/11/10
     */
    @TokenAnnotation
    @PostMapping("/listPageClientUser")
    @ApiOperation(value = "分页查询客户端用户信息列表")
    public PageSerializable<ClientUserInfoDTO> listPageClientUser(@RequestBody PageRequest<QueryClientUserListRequest> request) {
        return clientUserService.listPageClientUser(request);
    }

    /**
     * 删除用户信息
     *
     * @param request 删除用户信息请求实体
     * @return 操作信息
     * @author 戴越
     * @date 2021/11/10
     */
    @TokenAnnotation
    @PostMapping("/deleteClientUser")
    @ApiOperation(value = "删除用户信息")
    public OperateEnum deleteClientUser(@Valid @RequestBody DeleteUserRequest request) {
        return clientUserService.deleteClientUser(request);
    }

    /**
     * 修改客户端用户信息
     *
     * @param request 修改客户端用户信息请求实体
     * @return 操作信息
     * @author 戴越
     * @date 2021/11/10
     */
    @TokenAnnotation
    @PostMapping("/updateClientUser")
    @ApiOperation(value = "修改客户端用户信息")
    public OperateEnum updateClientUser(@Valid @RequestBody UpdateClientUserRequest request) {
        return clientUserService.updateClientUser(request);
    }

}
